@echo off
chcp 65001 >nul
echo === MQTT项目部署脚本 ===
echo 目标服务器: 8.149.243.80
echo.

:: 检查Node.js
where node >nul 2>nul
if %errorlevel% neq 0 (
    echo 错误: 未检测到Node.js，请先安装Node.js
    pause
    exit /b 1
)

:: 检查npm
where npm >nul 2>nul
if %errorlevel% neq 0 (
    echo 错误: 未检测到npm，请先安装npm
    pause
    exit /b 1
)

node -v
npm -v
echo.

:: 1. 安装后端依赖
echo 步骤 1/6: 安装后端依赖...
call npm install --production
if %errorlevel% neq 0 (
    echo 错误: 后端依赖安装失败
    pause
    exit /b 1
)
echo ✓ 后端依赖安装完成
echo.

:: 2. 安装前端依赖
echo 步骤 2/6: 安装前端依赖...
cd client-vue
call npm install
if %errorlevel% neq 0 (
    echo 错误: 前端依赖安装失败
    pause
    exit /b 1
)
echo ✓ 前端依赖安装完成
echo.

:: 3. 构建前端
echo 步骤 3/6: 构建前端项目...
call npm run build
if %errorlevel% neq 0 (
    echo 错误: 前端构建失败
    pause
    exit /b 1
)
echo ✓ 前端构建完成
cd ..
echo.

:: 4. 创建日志目录
echo 步骤 4/6: 创建日志目录...
if not exist logs mkdir logs
echo ✓ 日志目录创建完成
echo.

:: 5. 检查PM2
echo 步骤 5/6: 检查并安装PM2...
where pm2 >nul 2>nul
if %errorlevel% neq 0 (
    echo 正在安装PM2...
    call npm install -g pm2
    if %errorlevel% neq 0 (
        echo 错误: PM2安装失败
        pause
        exit /b 1
    )
)
echo ✓ PM2已就绪
echo.

:: 6. 启动服务
echo 步骤 6/6: 启动服务...
call pm2 stop mqtt-server 2>nul
call pm2 delete mqtt-server 2>nul
call pm2 start ecosystem.config.js --env production
if %errorlevel% neq 0 (
    echo 错误: 服务启动失败
    pause
    exit /b 1
)
call pm2 save
echo ✓ 服务启动完成
echo.

:: 显示服务状态
echo === 服务状态 ===
call pm2 list
echo.

echo === 部署完成！ ===
echo 访问地址：
echo   - 本地: http://localhost:3002
echo   - 公网: http://8.149.243.80:3002
echo.
echo 常用命令：
echo   查看日志: pm2 logs mqtt-server
echo   重启服务: pm2 restart mqtt-server
echo   停止服务: pm2 stop mqtt-server
echo   查看状态: pm2 status
echo.
pause
